package com.example.leetcode.prcatice;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;

/**
 * 给定两个字符串 order 和 s 。order 的所有单词都是 唯一 的，并且以前按照一些自定义的顺序排序。
 *
 * 对 s 的字符进行置换，使其与排序的 order 相匹配。更具体地说，如果在 order 中的字符 x 出现字符 y 之前，那么在排列后的字符串中， x 也应该出现在 y 之前。
 *
 * 返回 满足这个性质的 s 的任意排列 。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/custom-sort-string
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test791 {



    public String customSortString(String order, String s) {
        Map<Character,Integer> index = new HashMap<>();
        for (int i = 0;i<order.length();i++) {
            index.put(order.charAt(i),i);
        }

        Character[] chars = new Character[s.length()];
        for (int i = 0;i<chars.length;i++){
            chars[i] = s.charAt(i);
        }
        Arrays.sort(chars,(x,y) ->{
            int a =  index.getOrDefault(x,0);
            int b = index.getOrDefault(y,0);
            return a - b;
        });
        StringBuilder sb = new StringBuilder();
        for (Character c:chars) {
            sb.append(c);
        }
        return sb.toString();
    }


    public static void main(String[] args) {
        Test791 t = new Test791();
        System.out.println(t.customSortString("kqep", "pekeq"));
    }
}
